package com.scala.zhenghui

/**
 * Created by ibf on 2018/1/21.
 */
/**
 * 在scala编码当中，for，while，do..while用得十分的少
 * 因为scala当中有高阶函数
 */
object ForDemo {
  def main(args: Array[String]) {

   /* java当中的普通for实现
   for(int i = 0;i<10;i++){

    }*/
    //java当中有个foreach，循环的遍历某个对象，集合，数组。。。XXXX
    //scala当中的for循环，就相当于java中的foreach循环
    //scala中最原始的for循环的写法
    for(i <- 1 to 10 ){
      if(i == 1){
        print("["+i+",")
      }else if(i<10) {
        print(i+",")
      }else{
        print(i+"]")
      }
    }
    println()
    //将字符串通过for循环遍历成每一个char
    for(c <- "Hello World!"){
     // val cc: Char = c
    print(c+",")
    }

    //for的if守卫
    //以下是不用if守卫的方式来写条件的判断
    println()
    print("不使用if守卫的方法：")
    for(x <- 1 to 20){
      //只有偶数才能够进入到if判断当中，执行打印语句
      if(x % 2 == 0 ){
        print(x+",")
      }
    }
  //使用if守卫的方法做判断
    //只有偶数才能够进入到if判断当中，执行打印语句
    println()
    print("使用if守卫的方法：")
    for(x <- 1 to 20 if x % 2 == 1 ){
        print(x+",")
      }

   //双重for循环
    println()
    println("使用java的for循环嵌套方法：")
    for(i <- 1 to 9){
      for(j <- 1 to i){
        print(s"${i} * ${j} = ${i*j}\t")
      }
      println()
    }
    //使用scala的for循环嵌套方法
    println()
    println("使用scala的for循环嵌套方法：")
    for(i <- 1 to 9;j <- 1 to i){
        print(s"${i} * ${j} = ${i*j}\t")
        if(i == j )println()
    }
    //甚至有些情况下，小括号，还可以使用大括号代替
    //只要使用大括号，代码就可以写成多行
    println()
    println("使用大括号代替小括号：")
    for{i <- 1 to 9
        j <- 1 to i}{
      print(s"${i} * ${j} = ${i*j}\t")
      if(i == j )println()
    }
  }




}
